/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import model.Usuario;

/**
 *
 * @author Elizangela
 */
public class UsuarioDao{

    private Conexao con;
    private Statement stmt;
    private boolean sucesso = false;
    
    public UsuarioDao() {
        con = new Conexao();
        try {
            stmt = (Statement) con.getCon().createStatement();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    public boolean inserir(Usuario usuario) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
        HttpSession session = request.getSession();
        try {
            stmt.execute("INSERT INTO logs (login,acao,dados,horario)VALUES('" + session.getAttribute("usuarioLogin") + "','inserir usuario','"+usuario.getNome()+","+usuario.getLogin()+","+usuario.getSenha()+"',NOW())");
            stmt.execute("INSERT INTO usuario (nome, login, senha) VALUES ('" + usuario.getNome() + "','" + usuario.getLogin() + "','" + usuario.getSenha() + "')");
            sucesso = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }

        return sucesso;
    }

    public boolean login(Usuario login) {
        //FacesContext facesContext = FacesContext.getCurrentInstance();
        //HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
        //HttpSession session = request.getSession();
        try {
            //stmt.execute("INSERT INTO logs (login,acao,dados,horario)VALUES('" + session.getAttribute("usuarioLogin") + "','logar usuario','login',NOW())");
            ResultSet rs =stmt.executeQuery("SELECT *from usuario where login='" + login.getLogin() + "'and senha='" + login.getSenha() + "'");
            sucesso= rs.next();
            System.out.println(sucesso);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        con.fecharConexao();
        }
        return sucesso;
    }
    
    public List<Usuario> listar() {
        List<Usuario> usuarios = new ArrayList<Usuario>();
        try {
            ResultSet rs = stmt.executeQuery("SELECT * FROM usuario ORDER BY nome");
            while (rs.next()) {
                Usuario usuario = new Usuario();
                usuario.setCodUsuario(rs.getInt("codUsuario"));
                usuario.setNome(rs.getString("nome"));
                usuario.setLogin(rs.getString("login"));
                usuario.setSenha(rs.getString("senha"));
                usuarios.add(usuario);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }
        return usuarios;
    }

    public boolean remover(Usuario usuario) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
        HttpSession session = request.getSession();
        try {
            stmt.execute("INSERT INTO logs (login,acao,dados,horario)VALUES('" + session.getAttribute("usuarioLogin") + "','remover usuario','" + usuario.toString() + "',NOW())");
            stmt.execute("DELETE FROM usuario WHERE codUsuario = '" + usuario.getCodUsuario() + "'");
            sucesso = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }
        return sucesso;
    }

    public boolean alterar(Usuario usuario) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
        HttpSession session = request.getSession();
        String alterarUsuario = ("UPDATE usuario SET nome=?,login=?,senha=? WHERE codUsuario=?");
        try {
            PreparedStatement pstmt = con.getCon().prepareStatement(alterarUsuario);
            pstmt.setString(1, usuario.getNome());
            pstmt.setString(2, usuario.getLogin());
            pstmt.setString(3, usuario.getSenha());
            pstmt.setInt(4, usuario.getCodUsuario());

            stmt.execute("INSERT INTO logs (login,acao,dados,horario)VALUES('" + session.getAttribute("usuarioLogin") + "','alterar usuario','" + usuario.toString() + "',NOW())");
            pstmt.executeUpdate();
            sucesso = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }

        return sucesso;
    }

    public Usuario selecionar(int codUser) {
        Usuario usuario = new Usuario();
        try {
            ResultSet rs = stmt.executeQuery("SELECT * FROM usuario where codUsuario= '" + codUser + "'");
            while (rs.next()) {
                usuario.setCodUsuario(rs.getInt("codUsuario"));
                usuario.setNome(rs.getString("nome"));
                usuario.setLogin(rs.getString("login"));
                usuario.setSenha(rs.getString("senha"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }
        return usuario;
    }
}
